公司地址:茂名市人民南路新村大院22號101
電話:13592986386
發(fā)布時間:2024/9/3 21:26:10
MongoDB作為一種流行的NoSQL數(shù)據(jù)庫,被廣泛應(yīng)用于各種項目中。Python的mongoengine庫是一個對象文檔映射(ODM)工具,旨在簡化與MongoDB的交互。它提供了類似ORM(對象關(guān)系映射)的功能,使開發(fā)者能夠以面向?qū)ο蟮姆绞讲僮鱉ongoDB中的文檔。本文將詳細(xì)介紹mongoengine庫,包括其安裝方法、主要特性、基本和高級功能,以及實際應(yīng)用場景,幫助全面了解并掌握該庫的使用。
1. 以管理員身份運(yùn)行命令行窗口,使用該命令將MongDB服務(wù)刪除掉
sc delete MongoDB打開(services.msc)服務(wù)界面,找到MongoDB Server,右鍵->屬性->登錄,登錄身份選擇本地系統(tǒng)賬戶(L)。
from flask import Flask from flask_mongoengine import MongoEngine from mongoengine import QuerySet, Q app = Flask(__name__) # app.config.from_object(config) # 載入config.py中的配置信息 app.config["MONGODB_SETTINGS"] = { 'db': 'data', # 'host': '10.108.45.90', 'host': 'localhost', 'port': 27017, } # 注冊實例 db = MongoEngine() # 使用dict()函數(shù)創(chuàng)建空字典 class TestMasterModelQuerySet(QuerySet): @property def testpermission_description(self): """ 權(quán)限描述 (可以獲取權(quán)限的屬性名) :return: """ desc_dict = dict() desc_dict["permission_edit_user_permission"] = { "label": "修改用戶權(quán)限", "order": 0 } desc_dict["permission_edit_user_info"] = { "label": "修改用戶信息", "order": 1 } desc_dict["permission_edit_process"] = { "label": "修改工藝圖", "order": 2 } desc_dict["permission_edit_alarm_threshold"] = { "label": "編輯實時標(biāo)簽點", "order": 3 } desc_dict["permission_edit_deal_alarm"] = { "label": "管理報警", "order": 4 } return desc_dict def testget_user(self, username): """查詢用戶 如果不存在返回None""" try: qs = self.get(username=username) return qs except Exception as e: return None def testset_user_permission(self, username, permissions): try: user = self.testget_user(username) permission = self.testpermission_description for k, v in permission.items(): setattr(user, k, True if k in permissions else False) user.save() return True except Exception as e: return False # 用戶管理 class TestMasterModel(db.Document): """人員表""" meta = { 'queryset_class': TestMasterModelQuerySet, "collection": "master_model" } username = db.StringField(null=False, unique=False, ) # 用戶名 password = db.StringField(null=False, unique=False, max_length=18, min_length=4) # 密碼 phone = db.StringField(null=True, max_length=11) # 電話 email = db.StringField(null=True) # 郵箱 department = db.StringField(null=True, unique=False, ) # 部門 # 權(quán)限 permission_edit_user_permission = db.BooleanField(default=False) # 編輯用戶權(quán)限 permission_edit_user_info = db.BooleanField(default=False) # 編輯用戶信息 permission_edit_process = db.BooleanField(default=False) # 編輯工藝圖 permission_edit_alarm_threshold = db.BooleanField(default=False) # 編輯報警閾值 permission_edit_deal_alarm = db.BooleanField(default=False) # 處理報警 # 鏈接數(shù)據(jù)庫 db.init_app(app) # 如果你想創(chuàng)建一個用戶實例 # new_user = TestMasterModel(username='root', password='123456',phone='13592986386',email='AAA@qq.com',department='development', # permission_edit_user_permission=True,permission_edit_user_info=True,permission_edit_process=True, # permission_edit_alarm_threshold=True,permission_edit_deal_alarm=True, # ) # new_user.save() # 保存用戶到數(shù)據(jù)庫 @app.route('/') def index(): # 實例化Model aaaa= TestMasterModel.objects.testget_user("root") print(aaaa) print(aaaa.password) return 'mongodb demo test finish' if __name__ == "__main__": app.run(debug=True)